//01背包
int FetchMaxValue(int maxWeight, vector<int> w, vector<int> v)
{
    vector<vector<int>> dp(w.size() + 1, vector<int>(maxWeight, 0));
    //dp[i][j] 表示从前 i 个物品中选择，且总重量不超过 j 时，可以获得的最大价值
    for (int i = 1;i < w.size() + 1;++i)
    {
        for (int j = 1;j < maxWeight + 1;++j)
        {
            if (w[i - 1] <= j)
            {
                dp[i][j] = std::max(v[i - 1] + dp[i - 1][j - w[i - 1]], dp[i - 1][j]);
            }
            else
            {
                dp[i][j] = dp[i - 1][j];
            }
        }
    }
    return dp[w.size()][maxWeight];
}